package com.efast.cafe.portal.dao.doc;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.efast.cafe.framework.bean.QueryPageBase;
import com.efast.cafe.portal.bean.doc.DocFileHisQueryBean;
import com.efast.cafe.portal.bean.doc.DocFileListBean;
import com.efast.cafe.portal.bean.doc.DocFileListParamBean;
import com.efast.cafe.portal.bean.doc.DocFilesBean;
import com.efast.cafe.portal.entity.doc.DocFileForm;
import com.efast.cafe.portal.entity.doc.DocFileHis;
import com.efast.cafe.portal.entity.doc.DocFiles;


public interface DocFilesDao {

	/**
	 * 查询企业文件列表(根据文件夹ID 和 当前用户是否在文件夾所在的組的查詢權限條件)
	 * 
	 * @param companyCode
	 * @param username
	 * @param purCode
	 * @param folderId
	 * @return
	 */
	public List<DocFileListBean> queryCompanyFilesByFolder(DocFileListParamBean docFileListParamBean);

	public Integer queryCompanyFilesCountByFolder(DocFileListParamBean docFileListParamBean);

	/**
	 * 查询用户的文件列表
	 * 
	 * @param companyCode
	 * @param username
	 * @param folderId
	 * @return
	 */
	public List<DocFileListBean> queryMyFilesByFolder(DocFileListParamBean docFileListParamBean);

	public Integer queryMyFilesCountByFolder(DocFileListParamBean docFileListParamBean);

	/**
	 * 保存附件信息
	 * 
	 * @param portalAttachment
	 * @return
	 */
	public int saveDocFiles(DocFiles docFiles);

	/**
	 * 保存附件和表单的关系
	 * 
	 * @param attachmentForm
	 */
	public void saveDocFileForm(@Param("docFileForms") List<DocFileForm> docFileForms,
			@Param("companyCode") String companyCode, @Param("requestUser") String requestUser);

	/**
	 * 删除附件
	 * 
	 * @param attrachmentId
	 */
	public void deleteDocFiles(@Param("id") Integer id);

	public List<DocFilesBean> queryFilesList(@Param("queryBean") QueryPageBase queryBean, @Param("id") Integer id,
			@Param("companyCode") String companyCode);

	public Integer queryFilesCount(@Param("queryBean") QueryPageBase queryBean, @Param("id") Integer id,
			@Param("companyCode") String companyCode);

	/**
	 * 保存文件和文件夹的关系
	 * 
	 * @param attachmentForm
	 */
	public void saveDocFileFolder(@Param("id") Integer id, @Param("docFileForms") List<DocFileForm> docFileForms,
			@Param("companyCode") String companyCode, @Param("username") String username);

	public void updateFilesName(@Param("id") Integer id, @Param("realName") String realName);

	/**
	 * 文件历史版本
	 * 
	 * @param id
	 * @return
	 */
	public List<DocFileHis> queryFilesHisVersionList(DocFileHisQueryBean bean);
	
	/**
	 * 文件历史版本
	 * 
	 * @param id
	 * @return
	 */
	public Integer queryFilesHisVersionCount(DocFileHisQueryBean bean);

	/**
	 * 查看文件详情
	 * 
	 * @param id
	 * @return
	 */
	public DocFilesBean queryFilesDetail(@Param("id") Integer id);

	/**
	 * 文件的签出
	 * 
	 * @param id
	 */
	public void  filesCheckOut(@Param("id")Integer id,@Param("username")String username);

	/**
	 * 文件签入
	 * @param id
	 *            void
	 * @Author Administrator
	 * @Date 2017年9月15日
	 */
	public void filesCheckIn(@Param("docFiles")DocFiles docFiles,@Param("user")String user,@Param("companyCode")String companyCode);

	/**
	 * 文件取消迁出
	 * 
	 * @param id
	 */
	public void filesCancleCheckOut(@Param("id") Integer id);

	/**
	 * 修改文件的摘要或者关键字
	 * 
	 * @param docFileForm
	 */
	public void updateFilesKeywordOrDigest(DocFilesBean docFilesBean);

	/**
	 * 通过文件id查组的id
	 * 
	 * @param id
	 * @return
	 */
	public Integer queryGroupIdByFileId(@Param("id") Integer id);
}
